feat(planning): add research events and waiting-for-reply cues to the interview page - #5639
Conversation
The page links owner/repo#N to that repo's issue and a bare #N to meta.repo's, leaving [text](url) links, Qn refs and code spans as written. meta.repo is an allowed meta key in the file and the meta op. round.py warns, without blocking, when question or op text carries a bare #N and meta.repo is unset. Refs: #5569 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…vent Refs: #5569 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Render the textarea first as a block, then one action row with Confirm and Something's off. Refs: #5569 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…w page The page posts a generic `research` event per question and a `cancel-research` event while Claude holds it. Neither names a plugin; surface.md routes research to /discovery:research when it resolves, else an inline lookup. A hold records `waitingSince` so the held card reads "Research in progress, started <time>". The wake contract now says to re-read the events and restate after a stale-read refusal instead of passing force. Refs: #5569 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e Claude has not replied Refs: #5569 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…whole Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ne layout Cap the decide fieldset at 40% of the viewport height under 800px tall. At phone width the question rail no longer scrolls inside itself, the header is compact, and the status line wraps. Add ui checks for both. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…width Bump planning to 0.53.1 with its changelog entry. At phone width the Claude line wraps anywhere, so an unbroken run no longer widens the page. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…y docs The branch adds the research and cancel-research event kinds, meta.repo, the Research this and Cancel research buttons and waitingSince, so the release is a minor bump with the new capability under Added. The entry no longer claims to finish issue 5569, says the revising chip comes from a question's own unhandled decision, and says the answer controls stay enabled on a held question. The meta op takes five keys; the README and the set_meta docstring said four. Refs: #5569 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Claude finished @kyle-sexton's task in 1m 39s —— View job Security review complete
No security issues found. Scope reviewed: all 18 changed files (
This tool remains 127.0.0.1-only and token-guarded per |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6a11f78652
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…ta.repo A question held for the user's answer no longer offers Research this, since posting research would replace that hold. The bare #N warning now fires when meta.repo is not an owner/repo slug, matching what the page can link. Refs: #5569 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 1m 28s —— View job Security review complete
No security issues found. Scope: the full diff at HEAD
The tool remains 127.0.0.1-only and token-guarded per |
|
Claude finished @kyle-sexton's task in 3m 25s —— View job Code review complete
No new findings at this head ( Both issues Codex flagged on the prior revision (
Traced through the rest of the diff for correctness (not restating the author's own verification, which I did not independently re-run):
Scope was the 18 changed files via |
…ge labels (#5652) Refs: #5569 ## Summary Third pass on #5569 (planning interview ledger, exports and page). Delivers the items still unmet on origin/main after #5622 and #5639: ledger round-trip and export fidelity, Brief export from the confirmed restatement, dependency revision and upstream-change marks, page labels and empty note box, wrap-up confirm, finish op and offline reasons, round stamping on meta writes, wording-lint and schema caps, and `round.sh doctor`. ## Fix - `round.py`, `exporters.py`, `schema.py`, `server.py`: anchored round parse, `export-ledger --ledger`/`--diff`, `sync-ledger`, gate reports every row error, `revise --depends`, `--repoint`, `upstreamChanged`, derived release of user holds, `finish` op, `meta.setInRound`, port kept across stop. - `export-brief` fills Goal, Constraints, Acceptance and Out-of-scope from the newest confirmed restatement; `check-open-questions.sh --brief` exits 1 on an unconfirmed one. - `index.html`: Rec and option labels, empty note box, wrap-up confirm and outstanding list, finish modal, offline reasons, Needs you vs Log, block quotes. - `round.sh doctor --ledger`, wording lint limited to `Q<N>`/`C<N>`, `maxLength` in `ops.schema.json`. - `planning` 0.55.0 with a CHANGELOG entry. Still open on #5569 (stays open): digested SKILL.md/loop.md edits and the B4 text need an attended re-pin of `tests/interview-defenses.test.sh`; the browser UI checks were not run interactively here; the disable of Answer anyway is an owner call. ## Verification - `python3 -m unittest discover` in `plugins/planning/surface`: 529 OK, 1 skipped - `surface.test.sh`: PASS=413 FAIL=0 SKIP=1 - `tests/interview-defenses.test.sh`: PASS=165 FAIL=0 (no re-pin) - `scripts/check-open-questions.test.sh`: all passed - `scripts/check-changelog-parity.sh --check`, `--check-order`, `--check-bump origin/main`: pass - `scripts/validate-plugins.sh`: pass - origin/main merged; conflicts only in `plugin.json` and `CHANGELOG.md` (0.55.0 kept above 0.54.1) ## Related #5569, #5622, #5639, #5646 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ish (#5722) Refs: #5569 ## Summary Fourth pass on #5569, the planning interview page and watcher. Ships the largest coherent batch still open on origin/main. Remaining batches are filed as child issues (#5712, #5713, #5714, #5715, #5716, #5723), each starting `Refs #5569`. Item 8's disable (it reverses the Answer-anyway contract from #4547) is the owner's call and is left out. ## Fix - `round.sh stop` ends the data dir's `watch.sh` through the lease pid; a poll refused after `stop` exits 3. Windows Git Bash is not covered here: it is tracked in #5723, which needs a Windows host and an operator run. - `apply` warns when no watcher holds the lease; `add` defaults to the interview stage; `status` reports drifted seeded rounds and `repair-rounds` fixes them. - Page: restatement notice outranks notes, persistent changed-restatement banner, Confirm line diff against the newest confirmed rev, `#1`/`(a)`/`option N` in a note offers "Accept with note?", Needs-you toast, finish kept across reloads, and rail, activity and notes polish (items 16 f-r, 15.3 and 15.5). - `note-reply --needs-answer` pins a Claude question as a loose end. - planning 0.56.2 to 0.57.0 with a changelog entry. ## Verification - `bash plugins/planning/surface/surface.test.sh`: PASS=451 FAIL=0 SKIP=1 (htmlhint not installed) - `python3 -m unittest discover` in `plugins/planning/surface`: OK (skipped=1) - `scripts/check-changelog-parity.sh --check`, `--check-order`, `--check-bump origin/main`: pass - `scripts/validate-plugins.sh`: all manifests validated - origin/main merged cleanly. ## Related Issue #5569; prior PRs #5622, #5639, #5652. Child issues: #5712, #5713, #5714, #5715, #5716, #5723. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Refs: #5569
Summary
Part of #5569, a running log that stays open after this PR. The first pass (#5622) met its early items. This PR adds a further set that was still open on main:
#Nlinks throughmeta.repo.Not done here:
context/surface.mddocuments. Disabling them would reverse that contract, and Cancel research only posts an event that the session must handle, so a disabled page would depend on Claude releasing the hold. The owner decides; nothing on the issue settles it.sync-ledgerand noexport-ledger --diff(B1), andimport-ledgerstill reads "round 5 (sweep S1 to S3)" as round 513 (item 18).Fix
question_statesinserver.pymarks a question from its own delivered, unhandled decision event, so a changed prerequisite shows in the Stale and Waiting-on chips instead of naming an upstream question.#Nthroughmeta.repo;round.pywarns, without blocking, when text has one andmeta.repois unset.researchandcancel-researchevents, a held card reading "Research in progress, started " fromwaitingSince, and the wake contract re-reading events after a stale-read refusal.meta.repo,waitingSinceand two buttons), with the new capability under Added in the changelog. Themetaop README line says five keys. origin/main is merged in (thehedgedkind andresearchkinds coexist in the schema and server).Verification
surface.test.sh: PASS=362 FAIL=0 SKIP=1 (htmlhint absent).unittest discoveroverplugins/planning/surface: 443 tests OK (1 skipped), including a new test for therepokey on themetaop.scripts/run-ruff.sh checkandformat --checkonplugins/planning: clean.check-changelog-parity.sh --check,--check-order,--check-bump origin/main,validate-plugins.sh, typos and markdownlint on the changed Markdown: clean.Related
🤖 Generated with Claude Code